<?php
#DP 08-01-2012
# Przyk�adowy kontroler do testowania r�znych rzeczy
  
class TestController extends Zend_Controller_Action
{

	public $cos='testwlasnosc';
	private $db=null;
	
	
	/**
	 * akcja inicujaca wykonywana przed kazda inna akcja automatycznie
	 * podobny ale o wiele bardziej rozbuodowany mechanizm jest w yii
	 * mozna fajnie wykorzystac akcji np. do benshmarkow (w init inicjalizuje odliczanie czasu w ametodzie wlasciewej
	 * na kncu kncze)
	 */
    public function init()
    {
        /* tekst zostanie zle wyseietlony bo wykonuje sie on za wczesnie */
    	//echo 'wywołanie akcji init !!';	
    	   $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
		$profiler->setEnabled(true);
		
		$bootstrap = $this->getInvokeArg('bootstrap');
	    $db = $bootstrap->getResource('db');
		$db->setProfiler($profiler);
    	
    }

    public function indexAction()
    {
       
    }

    /**
     * Przyklad prezentuje:
     * - urzycie filtrow, walidacji ( normalnie bez korzystania z obiektow form )
     * 
     */
 	public function testAction()
    {
	    $this->view->zmienna='Testowa zmienna';
	   
	    # test uzywania Filtów
	    $tekst='damian pikoszewski';
	    $zfilter = new Zend_Filter_StringToUpper();
	    echo $zfilter->filter($tekst);
	    
      	$tekst='damianpikoszewski';
		$validator= new Zend_validate_Alnum();
		if ($validator->isValid($tekst))
		{
		 echo'Test walidacji poprawny. Wykorzystano walidator Alnum.';
		}
		else
		{
		echo 'Test walidacji negatywny. Walidator Alnums';
		}
		
		# todo nie dziala w autoloadazi musze to jakos ustawic
		/*
		 Test walidacji z wykorzystaniem mojej klsy walidatora str 172 esyZend
	    $validator = new MojeKlasy_Validate_Telefon();
	    $numertel='555-555-1212';
		if (! $validator->isValid($numertel)) 
		{
			$this->view->errors[] = "Invalid phone number!";
		}
		*/
	}
	  
	
	
	#DP 09-01-2012 Prosta akcja test POST FORM 
	public function postAction()
	{
		//odrazu ten formularz przekazuje do widoku
	    $this->view->formularz_1= new Application_Form_Imie('test/postodebranie'); //ustawienie url w const cos mi nie dzila
	    $this->view->formularz_1->setAction('test/postodebranie'); // wiec ustawiam recznie url
	    $this->view->tekst= 'jakis tekst przekazany z kontrolera do widoku.';
    }
    
 	#DP 09-01-2012 Prosta akcja test POST FORM 
	public function postodebranieAction()
    {
	    echo 'odebranie z posta';
	    echo'<pre>';
	    print_r($this->getRequest()); // zwracany jest obiekt Zend_Controller_Request_Http
	    echo '</pre>';
	       
	    echo '<br> PARAMETRY:<br>';
	    echo'<pre>';
	    print_r($this->getRequest()->getParams());
	    echo '</pre>';
    }
    
	 
	/**
	 *#DP 19-01-2012 najprostsza akcja pobierajaca z bazy
	 * FETCHALL()  prezentacja - najprostrsza forma pobrania
	 */
    public function bazapobranieAction()
    {
    	$data = date('Y:m:s');
    	echo $data;
    	echo 'azaPobranieAction';
     	$rzeki = new Application_Model_DbTable_Rzeki();
     	$rzek= $rzeki->fetchAll();
      
     	foreach ($rzek as $value) 
     	{
     		echo "nazwa rzeki: ".$value['nazwa']."długosc: ".$value['dlugosc'];
     	}
    }

    /**
     * fetchRow - pobranie 1 wiersza  - jak zapytanie sql pobierze wiecej - metoda i tak zwroci 1 pierwszy 
     */
	public function bazapobraniewarunkiAction()
    {
    	echo 'bazapobraniewarunkiAction przyklad wykorzystnia metody fetchRow<br> pobranie rzeki o id =2';
     	$rzeki = new Application_Model_DbTable_Rzeki();
     	$sql = $rzeki->select()->from('rzeki')->where('id = "2" ');  # UWAGA!!! starciłem na tym 2 dni !

     	$wynik=$rzeki->fetchRow($sql);  
     	echo "<br>nazwa rzeki: ".$wynik['nazwa']." długosc: ".$wynik['dlugosc'];
    }
    
    /**
     * FetchRow() - zapytanie gołe nie na query generatorze, wykorzystuje obiekt db
     */
	public function bazapobraniewarunkizapytanieAction()
    {
    	
	    echo 'bazapobraniewarunkiAction';
	 
	    # pobranie obiektu db na którym wykojuje wszystkie operacje bazodanowe - kontrolery powinny odrazu to miec
	    $bootstrap = $this->getInvokeArg('bootstrap');
	    $db = $bootstrap->getResource('db');
	    
	 	$sql = 'select * from rzeki';
	    $wyn=$db->fetchRow($sql); // jeden wiersz
	    
	    echo'<pre>';
	    print_r($wyn);
	    echo '</pre>';
    }
    
    # test inserta do bazy
	public function bazainsertAction()
    {
    	echo 'bazaInserteAction';
	    $rzeki = new Application_Model_DbTable_Rzeki();
			
	    $dane= array('nazwa'=>'nil', 'dlugosc'=>5555);
	    $rzeki->insert($dane);
    }
    
    
    /**
     * FetchAll() - zapytanie
     */
	public function bazatestwieleAction()
    {
    	
    echo 'bazatestwieleAction';
     
	    # pobranie obiektu db na którym wykojuje wszystkie operacje bazodanowe - kontrolery powinny odrazu to miec
	    $bootstrap = $this->getInvokeArg('bootstrap');
	    $db = $bootstrap->getResource('db');
		/* @var $db Zend_Db_Adapter_Pdo_Mysql */	
		
	    /*
	 	$sql = 'select * from rzeki where dlugosc > 100 and id <4';
	    $wyn=$db->fetchAll($sql); 
	    */
	    
	    /*
	    $sql = $db->select()->from('rzeki')->where('dlugosc > 100 and id <4');
	    $wyn=$db->fetchAll($sql); 
	    */
	    
	    /*
	     // przekazywanie parametrow przez placeholdera
	    $sql='select * from rzeki where nazwa = ?';
	    $bind= array('wisla');
	    $wyn=$db->fetchAll($sql,$bind); 
	    */
	    
	    # place holder przekazany jako tablica
	    //$sql='select * from rzeki where nazwa = :nazwa and id > :id';
	    //$bind= array('nazwa'=>'wisla','id'=> 2 );
	    //$wyn=$db->fetchAll($sql,$bind);
	    
	    var_dump($wyn); // ze zwraca array
	    echo'<pre>';
	    print_r($wyn);
	    echo '</pre>';
    
    }  

    /**
     * 
     * dzuiala !!
     */
    public function indexplikiAction()
    {
        $Plik = new Application_Model_DbTable_Plik();
        $select = $Plik->select()->from('plik', array('slug'));
        $pliki = $Plik->fetchAll($select);
        echo'<pre>';
        print_r($pliki);
        echo '</pre>';
    }

    public function showplikiAction()
    {
        $Plik = new Application_Model_DbTable_Plik();
        $select = $Plik->select()->where('slug = "rall" '); //UWAHA !!! wartosci musza byc w "" bo inaczej błąd 1!
        $plikj = $Plik->fetchRow($select);
       
    echo'<pre>';
        print_r($plikj);
        echo '</pre>';
      
    }
    
    /**
     * todo pracaz minaturkami z gotowym klockiem zenda
     */
    public function miniaturkiAction()
    {
    /*
                 My_Thumbnail::gdThumbnailFile(
                    $fld . '/' . $dane['nazwapliku'],
                    150, 100,
                    $fld . '/mini/' . $dane['nazwapliku']
                );
                My_Thumbnail::gdThumbnailFile(
                    $fld . '/' . $dane['nazwapliku'],
                    400, 300,
                    $fld . '/popup/' . $dane['nazwapliku']
                );
                My_Thumbnail::gdThumbnailFile(
                    $fld . '/' . $dane['nazwapliku'],
                    800, 600,
                    $fld . '/show/' . $dane['nazwapliku']
                );
                */
    }
    
    
    /**
     * Test renderowania partiali  uzycie metody renderScript i renderke partiali 
     */
    public function partialeAction()
    {
		//$this->render();
		
		# renderowanie partiala
		$this->renderScript('test/_partial-test.phtml');exit;
		
    	
    }
    
    /**
     * 2012-19-02 
     * Testowe odpalanie zendx
     */
    public function formzendxAction()
    {
    	$this->view->addHelperPath('ZendX/JQuery/View/Helper','ZendX_JQuery_View_Helper');
    }
    
 	/**
     * 2012-23-04 
     * Akcja z widokiem layout innym  TEstowa pokazowa
     */
    public function layout2Action()
    {
    	$this->view->tekst='TEstttt';
    	//$this->_helper->layout->setLayout('layout2');
    }
    
}

